﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.SessionState;

namespace Yu.Cms.Common
{
    public class JScript
    {
        protected static HttpResponse Response;
        protected static HttpSessionState Session;
        public JScript()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        /// <summary>
        /// Alert JS 并且转向
        /// </summary>
        /// <param name="message"></param>
        /// <param name="toURL"></param>
        public static void AlertAndRedirect(string message, string toURL)
        {
            string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";
            HttpContext.Current.Response.Write(string.Format(js, message, toURL));
        }

        public static void JscriptSender(System.Web.UI.Page page)
        {
            page.ClientScript.RegisterHiddenField("__EVENTTARGET", "");
            page.ClientScript.RegisterHiddenField("__EVENTARGUMENT", "");
            string s = @"<script language=Javascript>
                  function KendoPostBack(eventTarget, eventArgument) 
                  {
			                var theform = document.forms[0];
			                theform.__EVENTTARGET.value = eventTarget;
			                theform.__EVENTARGUMENT.value = eventArgument;
			                theform.submit();
		                }
                </script>";
            page.ClientScript.RegisterStartupScript(page.GetType(),"sds", s);
        }


        /// <summary>
        /// 弹出alert对话框
        /// </summary>
        /// <param name="message"></param>
        public static void Alert(string message)
        {
            message = Utils.DeleteUnVisibleChar(message);
            string js = @"<Script language='JavaScript'>
                alert('" + message + "');</Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void Alert(object message)
        {
            string js = @"<Script language='JavaScript'>
                alert('{0}');  
              </Script>";
            HttpContext.Current.Response.Write(string.Format(js, message.ToString()));
        }

        /// <summary>
        /// 弹出提示窗口并返回上一页
        /// </summary>
        /// <param name="message"></param>
        public static void AlertAndGoHistory(string message)
        {
            Alert(message);
            GoHistory(-1);
        }
        

        /// <summary>
        /// 弹出确认对话框
        /// </summary>
        /// <param name="message"></param>
        /// <param name="strWinCtrl"></param>
        public static void RtnRltMsgbox(object message, string strWinCtrl)
        {
            string js = @"<Script language='JavaScript'>
				 strWinCtrl = true;
                 strWinCtrl = if(!confirm('" + message + "'))return false;</Script>";
            HttpContext.Current.Response.Write(string.Format(js, message.ToString()));
        }


        /// <summary>
        /// 返回上一页
        /// </summary>
        /// <param name="value"></param>
        public static void GoHistory(int value)
        {
            string js = @"<Script language='JavaScript'>
                history.go({0});  
              </Script>";
            HttpContext.Current.Response.Write(string.Format(js, value));
        }


        /// <summary>
        /// 关闭窗口
        /// </summary>
        public static void CloseWindow()
        {
            string js = @"<Script language='JavaScript'>
                window.close();  
              </Script>";
            HttpContext.Current.Response.Write(js);
            HttpContext.Current.Response.End();
        }


        /// <summary>
        /// 刷新当前页
        /// </summary>
        public static void RefreshParent()
        {
            string js = @"<Script language='JavaScript'>
                parent.location.reload();
              </Script>";
            HttpContext.Current.Response.Write(js);
        }


        public static string JSStringFormat(string s)
        {
            return s.Replace("\r", "\\r").Replace("\n", "\\n").Replace("'", "\\'").Replace("\"", "\\\"");
        }

        public static void RefreshOpener()
        {
            string js = @"<Script language='JavaScript'>
                opener.location.reload();
              </Script>";
            HttpContext.Current.Response.Write(js);
        }

        /// <summary>
        /// 弹出窗口
        /// </summary>
        /// <param name="url"></param>
        public static void OpenWebForm(string url)
        {

            /*开始*/
            string js = @"<Script language='JavaScript'>
		//window.open('" + url + @"');
		window.open('" + url + @"','','height=0,width=0,top=0,left=0,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');
		</Script>";
            /*结束*/
            /*…………………………………………………………………………………………*/
            HttpContext.Current.Response.Write(js);
        }

        /// <summary>
        /// 弹出窗口
        /// </summary>
        /// <param name="url"></param>
        /// <param name="name"></param>
        /// <param name="future"></param>
        public static void OpenWebForm(string url, string name, string future)
        {
            string js = @"<Script language='JavaScript'>
                 window.open('" + url + @"','" + name + @"','" + future + @"')
              </Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void OpenWebForm(string url, string formName)
        {

            /*注释内容:								*/
            /*开始*/
            string js = @"<Script language='JavaScript'>
		//window.open('" + url + @"','" + formName + @"');
		window.open('" + url + @"','" + formName + @"','height=0,width=0,top=0,left=0,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');
		</Script>";
            /*结束*/
            /*…………………………………………………………………………………………*/

            HttpContext.Current.Response.Write(js);
        }


        public static void OpenWebForm(string url, bool isFullScreen)
        {
            string js = @"<Script language='JavaScript'>";
            if (isFullScreen)
            {
                js += "var iWidth = 0;";
                js += "var iHeight = 0;";
                js += "iWidth=window.screen.availWidth-10;";
                js += "iHeight=window.screen.availHeight-50;";
                js += "var szFeatures ='width=' + iWidth + ',height=' + iHeight + ',top=0,left=0,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no';";
                js += "window.open('" + url + @"','',szFeatures);";
            }
            else
            {
                js += "window.open('" + url + @"','','height=0,width=0,top=0,left=0,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');";
            }

            js += "</Script>";

            HttpContext.Current.Response.Write(js);
        }

        public static void JavaScriptLocationHref(string url)
        {
            string js = @"<Script language='JavaScript'>
                window.location.replace('{0}');
              </Script>";
            js = string.Format(js, url);
            HttpContext.Current.Response.Write(js);
        }


        public static void JavaScriptFrameHref(string FrameName, string url)
        {
            string js = @"<Script language='JavaScript'>
 
                @obj.location.replace(""{0}"");
              </Script>";
            js = js.Replace("@obj", FrameName);
            js = string.Format(js, url);
            HttpContext.Current.Response.Write(js);
        }


        public static void JavaScriptResetPage(string strRows)
        {
            string js = @"<Script language='JavaScript'>
                window.parent.CenterFrame.rows='" + strRows + "';</Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void JavaScriptSetCookie(string strName, string strValue)
        {
            string js = @"<script language=Javascript>
		var the_cookie = '" + strName + "=" + strValue + @"'
		var dateexpire = 'Tuesday, 01-Dec-2020 12:00:00 GMT';
		document.cookie = the_cookie + '; expires='+dateexpire;			
		</script>";
            HttpContext.Current.Response.Write(js);
        }


        public static void GotoParentWindow(string parentWindowUrl)
        {
            string js = @"<Script language='JavaScript'>
                this.parent.location.replace('" + parentWindowUrl + "');</Script>";
            HttpContext.Current.Response.Write(js);
        }


        public static void ReplaceParentWindow(string parentWindowUrl, string caption, string future)
        {
            string js = "";
            if (future != null && future.Trim() != "")
            {
                js = @"<script language=javascript>this.parent.location.replace('" + parentWindowUrl + "','" + caption + "','" + future + "');</script>";
            }
            else
            {
                js = @"<script language=javascript>var iWidth = 0 ;var iHeight = 0 ;iWidth=window.screen.availWidth-10;iHeight=window.screen.availHeight-50;
						var szFeatures = 'dialogWidth:'+iWidth+';dialogHeight:'+iHeight+';dialogLeft:0px;dialogTop:0px;center:yes;help=no;resizable:on;status:on;scroll=yes';this.parent.location.replace('" + parentWindowUrl + "','" + caption + "',szFeatures);</script>";
            }

            HttpContext.Current.Response.Write(js);
        }



        public static void ReplaceOpenerWindow(string openerWindowUrl)
        {
            string js = @"<Script language='JavaScript'>
                window.opener.location.replace('" + openerWindowUrl + "');</Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void ReplaceOpenerParentFrame(string frameName, string frameWindowUrl)
        {
            string js = @"<Script language='JavaScript'>
                window.opener.parent." + frameName + ".location.replace('" + frameWindowUrl + "');</Script>";
            HttpContext.Current.Response.Write(js);
        }


        public static void ReplaceOpenerParentWindow(string openerParentWindowUrl)
        {
            string js = @"<Script language='JavaScript'>
                window.opener.parent.location.replace('" + openerParentWindowUrl + "');</Script>";
            HttpContext.Current.Response.Write(js);
        }


        public static void CloseParentWindow()
        {
            string js = @"<Script language='JavaScript'>
                window.parent.close();  
              </Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void CloseOpenerWindow()
        {
            string js = @"<Script language='JavaScript'>
                window.opener.close();  
              </Script>";
            HttpContext.Current.Response.Write(js);
        }


        public static string ShowModalDialogJavascript(string webFormUrl)
        {
            string js = @"<script language=javascript>
						var iWidth = 0 ;
						var iHeight = 0 ;
						iWidth=window.screen.availWidth-10;
						iHeight=window.screen.availHeight-50;
						var szFeatures = 'dialogWidth:'+iWidth+';dialogHeight:'+iHeight+';dialogLeft:0px;dialogTop:0px;center:yes;help=no;resizable:on;status:on;scroll=yes';
						showModalDialog('" + webFormUrl + "','',szFeatures);</script>";
            return js;
        }

        public static string ShowModalDialogJavascript(string webFormUrl, string features)
        {
            string js = @"<script language=javascript>							
						showModalDialog('" + webFormUrl + "','','" + features + "');</script>";
            return js;
        }


        public static void ShowModalDialogWindow(string webFormUrl)
        {
            string js = ShowModalDialogJavascript(webFormUrl);
            HttpContext.Current.Response.Write(js);
        }

        public static void ShowModalDialogWindow(string webFormUrl, string features)
        {
            string js = ShowModalDialogJavascript(webFormUrl, features);
            HttpContext.Current.Response.Write(js);
        }
        public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left)
        {
            string features = "dialogWidth:" + width.ToString() + "px"
                + ";dialogHeight:" + height.ToString() + "px"
                + ";dialogLeft:" + left.ToString() + "px"
                + ";dialogTop:" + top.ToString() + "px"
                + ";center:yes;help=no;resizable:no;status:no;scroll=no";
            ShowModalDialogWindow(webFormUrl, features);
        }

        public static void SetHtmlElementValue(string formName, string elementName, string elementValue)
        {
            string js = @"<Script language='JavaScript'>if(document." + formName + "." + elementName + "!=null){document." + formName + "." + elementName + ".value =" + elementValue + ";}</Script>";
            HttpContext.Current.Response.Write(js);
        }

        public static void CheckSession(string SessionName, string Message, string RedirectUrl)
        {
            Session = HttpContext.Current.Session;
            Response = HttpContext.Current.Response;
            if (Session[SessionName] == null)
            {
                WriteMessage(Message, false, false);
                string js = "top.document.location='" + RedirectUrl + "';";
                WriteJavaScript(js); ;
            }
        }

        public static void WriteMessage(string strMsg, bool Back, bool End)
        {
            Response = HttpContext.Current.Response;
            strMsg = strMsg.Replace("'", "“");
            strMsg = strMsg.Replace("\r\n", "");
            Response.Write("<script language=javascript>alert('" + strMsg + "');</script>");
            if (Back)
                Response.Write("<script language=javascript>history.back();</script>");
            if (End)
                Response.End();
        }

        public static void WriteJavaScript(string strJavaScript)
        {
            Response = HttpContext.Current.Response;
            Response.Write("<script language=javascript>" + strJavaScript + "</script>");
        }
    }
}